Within the field of computer graphics, a variety of algorithms have been developed for high quality simulation of fluid phenomena. These methods have been used in visual effects and for other off-line applications. While many methods have been demonstrated to run interactively in certain situations, they have not been used in widely deployed interactive applications, such as video games. However, two developments have the potential to alter the applicability of interactive fluid dynamics: the rise of highly programmable high-throughput consumer GPUs, and the development of high quality, efficient, and stable methods for evolving 3D fluid systems in time.
For deployment in popular applications such as games or online virtual worlds, ease of integration with existing software architectures and scalability across a range of consumer hardware platforms is desired. Another important consideration is the aesthetic desire to get beyond the “fluid-in-a-box” look typically associated with performing complex fluid calculations inside a fixed rectilinear domain, where the fluid effects stop at the edge of the domain.
Particle-based fluid simulation methods like Smoothed Particle Hydrodynamics (SPH) are attractive because they do not suffer from the limitation to be inside a box. However, enforcing incompressibility is important for accurate production of turbulence, and SPH methods have a hard time enforcing incompressibility efficiently. They also can have difficulty allocating computational elements throughout space efficiently. In particular, they are most effective for fluids with explicit surfaces such as water in a container, and do not work well for fluids that have no interfaces such as air or deep underwater. For these reasons, they have not been demonstrated to be effective for calculating single phase flows such as air around a car. Vortex-based Lagrangian methods enforce incompressibility and can produce turbulent effects, but they are difficult to implement in 3D, especially for complex dynamic boundary conditions.
Eulerian fluid simulation methods can be made interactive for complex flows, can efficiently generate turbulent effects, and are good for fluids not bound by interfaces. However, they typically are confined to a finite rectilinear domain and therefore are hard to use in large environments with unconstrained fluid motion. Grid reshaping and adaptive resolution techniques exist for Eulerian methods, but these techniques are slower than regular grid methods due to their use of sparse data structures, and have not been demonstrated to run at interactive frame rates.